package org.md.budzik.problems;

import java.math.BigInteger;
import java.util.Map;

/**
 * Abstrakcyjna klasa reprezentująca wyrażenie,
 * dla którego po podstawieniu zmiennych można
 * wyliczyć wynik.
 * @author Wiezzel
 *
 */
public abstract class Expression {

	public abstract String toString();
	
	/**
	 * Wylicz wartość wyrażenia na podstawie podanych zmiennych
	 * @param variables Słownik nazwa zmiennej -> wartość
	 * @return
	 * @throws ParseException
	 */
	public abstract BigInteger value(Map<String,Integer> variables) throws ParseException;
	
}